#include <stdio.h>
#include <openssl/bn.h>
int main(int argc,char ** argv)
{
    if(argc<4)
    {
        printf("用法：%s Xa Yb P\n",argv[0]);
        return 0;
    }
    char *Xas=argv[1];    //自己的X字符串
    char *Ybs=argv[2];    //对方的Y字符串
    char *Ps=argv[3];   //大素数
    BIGNUM *Xa=BN_new(); //X
    BIGNUM *Yb=BN_new(); //对方的Y
    BIGNUM *P=BN_new(); //大素数P
    BIGNUM *K=BN_new(); //密钥K
    BN_CTX *ctx=BN_CTX_new();   
    BN_hex2bn(&Xa,Xas);   //设置X
    BN_hex2bn(&Yb,Ybs);   //设置对方Y
    BN_hex2bn(&P,Ps);   //设置素数P
    BN_mod_exp(K,Yb,Xa,P,ctx);    //计算K
    printf("K\n");
    printf("%s\n",BN_bn2hex(K));   //打印K
    BN_free(Xa);    //释放
    BN_free(Yb); 
    BN_free(K);
    BN_free(P);
    BN_CTX_free(ctx);
    return 0;
}
